package com.xinghai.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xinghai.system.domain.XhVehicleInfoMaterial;
import com.xinghai.system.domain.dto.ConsumablesDetailDTO;
import com.xinghai.system.domain.dto.DebitDetailDTO;
import com.xinghai.system.domain.dto.DeptReconciliationDTO;
import com.xinghai.system.domain.dto.DeviceDetailDTO;
import com.xinghai.system.domain.vo.XhStaticsReportQueryVo;
import com.xinghai.system.domain.vo.XhVehicleInfoMaterialVO;

import java.util.List;

/**
 * 用车耗材明细Mapper接口
 * 
 * @author smy
 * @date 2024-07-25
 */
public interface XhVehicleInfoMaterialMapper extends BaseMapper<XhVehicleInfoMaterial>
{
    /**
     * 查询用车耗材明细
     * 
     * @param id 用车耗材明细主键
     * @return 用车耗材明细
     */
    public XhVehicleInfoMaterial getInfo(Long id);

    /**
     * 查询用车耗材明细列表
     * 
     * @param xhVehicleInfoMaterial 用车耗材明细
     * @return 用车耗材明细集合
     */
    public List<XhVehicleInfoMaterial> list(XhVehicleInfoMaterial xhVehicleInfoMaterial);

    /**
     * 新增用车耗材明细
     *
     * @param xhVehicleInfoMaterial 用车耗材明细
     * @return 结果
     */
    public int insert(XhVehicleInfoMaterial xhVehicleInfoMaterial);

    /**
     * 批量新增用车耗材明细
     *
     * @param xhVehicleInfoMaterial 用车耗材明细
     * @return 结果
     */
    public int insertBatch(List<XhVehicleInfoMaterial> xhVehicleInfoMaterialList);

    /**
     * 修改用车耗材明细
     * 
     * @param xhVehicleInfoMaterial 用车耗材明细
     * @return 结果
     */
    public int update(XhVehicleInfoMaterial xhVehicleInfoMaterial);

    /**
     * 删除用车耗材明细
     * 
     * @param id 用车耗材明细主键
     * @return 结果
     */
    public int delete(Long id);

    /**
     * 批量删除用车耗材明细
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBatch(Long[] ids);

    void deleteByVehicle(XhVehicleInfoMaterialVO xhVehicleInfoMaterialVO);

    /**
     * 耗材明细分页查询
     *
     * @param xhStaticsReportQueryVo 查询条件
     * @return 结果
     */
    List<ConsumablesDetailDTO> consumablesDetailPage(XhStaticsReportQueryVo xhStaticsReportQueryVo);

    List<DebitDetailDTO> debitDetailPage(XhStaticsReportQueryVo xhStaticsReportQueryVo);

    List<DeptReconciliationDTO> deptReconciliationPage(XhStaticsReportQueryVo xhStaticsReportQueryVo);

    List<DeviceDetailDTO> deviceDetailPage(XhStaticsReportQueryVo xhStaticsReportQueryVo);
}
